package org.langqiao.io.file;

import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;

public class FileList {
	
	//目录数和文件数
	int count_dirs=0,count_files=0;
	//所有文件字节数
	long byte_files=0;

	//构造方法
	public FileList() {
		count(new File("."));
		System.out.println("共有"+count_files+"文件，"+"总的文件字节数为"+byte_files);
		System.out.println("共有"+count_dirs+"个目录");
	}
	
	//dir文件中文件列表，递归算法
	public void count(File dir) {
		//显示dir的绝对路径
		System.out.println(dir.getAbsolutePath());
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
		//返回当前目录中的所有文件
		File[] files = dir.listFiles();
		//目录和文件列表
		for(int i=0;i<files.length;i++){
			System.out.print(files[i].getName()+"\t");			
			//判断指定File对象是否是文件
			if(files[i].isFile()) {
			    System.out.print(files[i].length()+"B\t");//显示文件长度
			    count_files++;
			    byte_files+=files[i].length();
			}else{
				System.out.print("<DIR>\t");
				count_dirs++;
			}
			System.out.println(sdf.format(new Date(files[i].lastModified())));//显示修改时间
		}
		//所有子目录中文件列表长度计算
		for(int i=0;i<files.length;i++){
		   //判断指定File对象是否是目录
		   if(files[i].isDirectory()){
			   //子目录中文件列表和长度计算，递归调用
			   count(files[i]);
		   }
		}
	}
	
	public static void main(String[] args) throws IOException {
		new FileList();
	}
}

